Telegram Group & Telegram Channel
⚙️ Как проверить, что WeakReference «отпустила» объект

В .NET слабые ссылки позволяют ссылаться на объект, не препятствуя сборщику мусора его удалить. Это полезно в кэшах, пулах объектов и других случаях, где важно избегать утечек памяти.

Но как проверить, что объект удаляется?

Можно использовать пример:
class MyObject
{
~MyObject()
{
Console.WriteLine("MyObject был удалён сборщиком мусора");
}
}

class Program
{
static void Main()
{
WeakReference weakRef = test();

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();

Console.WriteLine("После сборки мусора: " + (weakRef.IsAlive ? "Жив" : "Удалён"));
}

static WeakReference test() {
var obj = new MyObject();
WeakReference weakRef = new WeakReference(obj);
Console.WriteLine("До удаления ссылки: " + (weakRef.IsAlive ? "Жив" : "Удалён"));
return weakRef;
}
}


IsAlive показывает, жив ли объект.

GC.Collect() + GC.WaitForPendingFinalizers() заставляют сборщик мусора немедленно освободить неиспользуемые объекты.

• Деструктор ~MyObject() позволяет наглядно убедиться, что объект удалён.

Метод IsAlive может показывать, что объект жив даже после GC.Collect(), если объект ещё не финализирован или находится в очереди на финализацию.

Для надёжности можно использовать TryGetTarget вместо IsAlive.

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/csharpproglib/5856
Create:
Last Update:

⚙️ Как проверить, что WeakReference «отпустила» объект

В .NET слабые ссылки позволяют ссылаться на объект, не препятствуя сборщику мусора его удалить. Это полезно в кэшах, пулах объектов и других случаях, где важно избегать утечек памяти.

Но как проверить, что объект удаляется?

Можно использовать пример:

class MyObject
{
~MyObject()
{
Console.WriteLine("MyObject был удалён сборщиком мусора");
}
}

class Program
{
static void Main()
{
WeakReference weakRef = test();

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();

Console.WriteLine("После сборки мусора: " + (weakRef.IsAlive ? "Жив" : "Удалён"));
}

static WeakReference test() {
var obj = new MyObject();
WeakReference weakRef = new WeakReference(obj);
Console.WriteLine("До удаления ссылки: " + (weakRef.IsAlive ? "Жив" : "Удалён"));
return weakRef;
}
}


IsAlive показывает, жив ли объект.

GC.Collect() + GC.WaitForPendingFinalizers() заставляют сборщик мусора немедленно освободить неиспользуемые объекты.

• Деструктор ~MyObject() позволяет наглядно убедиться, что объект удалён.

Метод IsAlive может показывать, что объект жив даже после GC.Collect(), если объект ещё не финализирован или находится в очереди на финализацию.

Для надёжности можно использовать TryGetTarget вместо IsAlive.

🐸Библиотека шарписта #буст

BY Библиотека шарписта | C#, F#, .NET, ASP.NET




Share with your friend now:
tg-me.com/csharpproglib/5856

View MORE
Open in Telegram


Библиотека шарписта | C F NET ASP NET Telegram | DID YOU KNOW?

Date: |

In many cases, the content resembled that of the marketplaces found on the dark web, a group of hidden websites that are popular among hackers and accessed using specific anonymising software.“We have recently been witnessing a 100 per cent-plus rise in Telegram usage by cybercriminals,” said Tal Samra, cyber threat analyst at Cyberint.The rise in nefarious activity comes as users flocked to the encrypted chat app earlier this year after changes to the privacy policy of Facebook-owned rival WhatsApp prompted many to seek out alternatives.

Unlimited members in Telegram group now

Telegram has made it easier for its users to communicate, as it has introduced a feature that allows more than 200,000 users in a group chat. However, if the users in a group chat move past 200,000, it changes into "Broadcast Group", but the feature comes with a restriction. Groups with close to 200k members can be converted to a Broadcast Group that allows unlimited members. Only admins can post in Broadcast Groups, but everyone can read along and participate in group Voice Chats," Telegram added.

Библиотека шарписта | C F NET ASP NET from vn


Telegram Библиотека шарписта | C#, F#, .NET, ASP.NET
FROM USA